#include <stdio.h>//standard input output:标准输入输出流

int main()//程序的入口
{
  //输出函数：将数据输出到终端
  //1.格式：输出数据的格式：%d，%c
  // \n 换行符（回车）
  //2.输出数据的值

  //变量：不能以数字开头
  //sizeof:计算一个变量的大小

  /*计算机正负数识别：
    将数据的最高位作为符号位
    0 ： 整数
    1：  负数
    +1 ： 0000 0001
    -1 ： 1000 0001  原码：（负数的原码）
          1111 1110  反码：（将原码除符号位之外的取反）
          1111 1111  补码：（反码+1）

  符号位不参与取反，参与计算
  
  计算机中的所有数据都是以补码形式存在的
  正数的补码是其本身
  所以：+1 与-1的和计算
  0000 0001
  1111 1111
  0000 0000 //溢出
  */

  /*C语言是弱类型的语言
    char a = 'a';
    int b = a; //宽转换：窄的数据类型往宽的数据类型转换；
    窄转换：
  */
  
  //int :整数

  //unsigned :无符号  unsigned int 范围：0到2的23次方减1
  unsigned int a = 10;
  //int 范围：-2^31 ------- 2^31-1
  int a;

  //无符号字符型  范围  2^8   0 ----- 255; 
  // 有符号char型  -128 ---- 127；
  unsigned char a = '0';

  /*short 短整型 2字节 2^16 65536
    32767 */

  /*long 长整型 8个字节*/

  /*浮点型数据:近似值（使用乘2法）
    0.1+0.2=0.3 这个就不相等 0.1和0.2是无限循环小数
    浮点型不能判断相等，只能判断  >  <  

    */
  float a = 3.14;  //单精度 4个字节
  double b = 3.1415926;   //双精度 8个字节
  printf("%f\n",a);//默认输出小数点后6位(双精度时也是)
  printf("%.2f\n",a);//保留两位小数
  printf("%.7lf\n",b);//保留7位
  printf("%ld\n",sizeof(long double));//对精度要求特别高的时候，可以用这个
  

  printf("%c\n",a);
  
  printf("%ld\n",sizeof(a));//单位 字节

  return 0;//返回一个整数
}
